package de.mnit.basis.db.sys3e.e1_basis;

import de.mnit.basis.db.sql.S_SqlDB;
import de.mnit.basis.fehler.Fehler;



/**
 * @author Michael Nitsche
 * 03.08.2007	Erstellt
 */
public abstract class A_E1_H<TA extends S_E1_Manager> {

	protected final String tab; //Zur einfachen Verwendung in den Tabellen!
	private final TA manager;


	protected A_E1_H(TA manager, String tabname) {
//		this.tab=gTabName();
		this.tab=tabname;
		this.manager=manager;
		this.manager.tabAnmelden(this);
		Fehler.text.wenn_Null_o_Leer(this.tab);
	}


	public final String gTabName() {
		return this.tab;
	}

	/**
	 * Version zurück geben
	 */
	protected abstract void erstellen();
//	protected abstract <T extends S_NeuTab1> void erstellen(T neu); //TODO Wäre so wünschenswert! Problem: Wie bekommt man einfach den Typ von T da rein?

	/**
	 * Kann bei Bedarf überschrieben werden!
	 */
	protected void start() {}

	/**
	 * Kann bei Bedarf überschrieben werden!
	 */
	protected int update(int aktuelle_version)   { return 1; }

	//Abkürzungen

	protected void b(String befehl) {
		this.m().direkt().befehl(befehl);
	}

	protected S_SqlDB db() {
		return this.m().direkt();
	}

	protected TA m() {
		return this.manager;
	}

}
